//
//  HomeTableViewController.swift
//  Weibo
//
//  Created by 周先生 on 15/11/8.
//  Copyright © 2015年 周先生. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

//定义首页cell标识符
private let HomeCellID = "HomeCellID"
class HomeTableViewController: BaseTableViewController {
    
    //数据源 模型数组
    private lazy var statues = [Status]()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogin {
            visitorLoginView?.setUIInfo(nil, title: "关注一些人，回这里看看有什么惊喜")
            
            return
        }
        
        
        //准备prepareTableView
        prepareTableView()
        //获取网络数据
        loadData()
    }
    
    //显示数据
    private func prepareTableView() {
    
        /**
        设置下拉刷新
        */
        refreshControl = UIRefreshControl()
        //添加监听方法
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        //注册cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellID)
        
        //tableView在ios8中自动计算行高需要指定两个属性
        //预估行高
        tableView.estimatedRowHeight = 200
        //要使用自动计算行高 需要一个至上而下的约束
        tableView.rowHeight = UITableViewAutomaticDimension
//        tableView.rowHeight = 200
        
        //设置分割线
        tableView.separatorStyle = .None
        
        //
        tableView.tableFooterView = indicatorView
    
    }
        //加载微博首页数据
       @objc private func loadData() {
        
        //确定since_id
        //注意: 如果max_id和since_id同时有值 则服务器不会返回任何数据
        var since_id = 0
        var max_id = 0
        if indicatorView.isAnimating() {
        //上拉加载更多数据
            since_id = 0
            max_id = statues.last?.id ?? 0
        
        
        } else {
        //下拉刷新
            max_id = 0
            since_id = statues.first?.id ?? 0
        
        }
        StatusListViewModel.loadData(since_id: since_id, max_id: max_id) { (array) -> () in
            print(array?.count)
            //结束刷新
            self.refreshControl?.endRefreshing()

            if array == nil {
            //请求失败
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                //加载数据失败 停止动画
                self.indicatorView.stopAnimating()
                return
            }
            //一定拿到数据 赋值
            if since_id > 0 {
            //下拉刷新 直接追加数据
                self.statues = array! + self.statues
                
            }else if max_id > 0 {
            //上拉加载更多
                self.statues = self.statues + array!
                //加载数据完成 停止动画
                self.indicatorView.stopAnimating()
            
            }else {
            //首次加载
            self.statues = array!
            }
            
            //刷新表格
            self.tableView.reloadData()
        }
    }
    private lazy var indicatorView: UIActivityIndicatorView = {
    let indicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    return indicator
    }()
}

//定义extension 包含了所有的数据源方法 协议方法
extension HomeTableViewController {
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statues.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellID, forIndexPath: indexPath) as! StatusCell
//        cell.textLabel?.text = statues[indexPath.row].user?.name
        cell.status = statues[indexPath.row]
        
        if indexPath.row == statues.count - 1 && !indicatorView.isAnimating() {
            /**
            倒数第二行 加载数据 并且小菊花没有转动的时候加载数据

            */
            indicatorView.startAnimating()
            loadData()
            print("开始静默加载数据")
        
        }
        return cell
        
    }

}









